// 类型断言可以用来手动指定一个值的类型
// 语法：<类型>值 或者 值as类型

let num:number|string = "hello"
console.log(num.length)  //5
num = 20
// 报错 2339 类型number不存在属性length
// console.log(num.length)

// 类型断言不是类型转换，不允许断言成一个联合类型中不存在的类型
// 能断言联合类型中存在的类型
function getAssert(name:string|number) {
  // 写法1 <类型>值
  // return (<string>name).length

  // 写法2 值as类型
  // jsx语法（react和jsx语法的ts版）只能采用写法2
  return (name as string).length
}
let a:number = getAssert(10)  // undefined
let b:number = getAssert("hello")  //5
console.log(a, b)

export {}



